/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package tos.semaphore;

import java.util.concurrent.Semaphore;
import org.jdesktop.application.FrameView;
import tos.TosView;

/**
 *
 * @author Milos
 */
public class Semafora {

    public Semafora(FrameView parent) {
        Brojac b = new Brojac(0);
        Semaphore semafor = new Semaphore(1);

        int brojPovecavaca = Integer.parseInt(((TosView)parent).brojPovecavaca.getText());
        int brojSmanjivaca = Integer.parseInt(((TosView)parent).brojSmanjivaca.getText());
        int brojPovecavanja = Integer.parseInt(((TosView)parent).brojPovecanja.getText());
        int brojSmanjenja = Integer.parseInt(((TosView)parent).brojSmanjenja.getText());

        ((TosView)parent).appendOutput("Broj je " + b.getBrojac() + "\n");

        Povecavac[] povecivaci = new Povecavac[brojPovecavaca];
        Smanjivac[] smanjivaci = new Smanjivac[brojSmanjivaca];

        for (int i = 0; i < brojPovecavaca; i++) {
            povecivaci[i] = new Povecavac("Povecavac" + i, semafor, brojPovecavanja, b, parent);
            povecivaci[i].start();
        }

        for (int i = 0; i < brojSmanjivaca; i++) {
            smanjivaci[i] = new Smanjivac("Smanjivac" + i, semafor, brojSmanjenja, b, parent);
            smanjivaci[i].start();
        }

        for (int i = 0; i < brojPovecavaca; i++) {
            try {
                povecivaci[i].join();
            } catch (InterruptedException ex) {
                System.out.println("Greska " + ex);
            }
        }

        for (int i = 0; i < brojSmanjivaca; i++) {
            try {
                smanjivaci[i].join();
            } catch (InterruptedException ex) {
                System.out.println("Greska " + ex);
            }
        }

        ((TosView)parent).appendOutput("Broj je " + b.getBrojac() + "\n");
    }
}
